export default class HistoryHelper {
  static replace = (path: string) => {
    // TODO: 考察 https://github.com/vuejs/router/pull/1219 能否解决该问题
    // 各个 sub app 使用的 router 在进行跳转后，会清空 window.history.state 内的大多数内容，
    // 导致 main app 的 router 无法正常跟踪 history 变化、也无法进行正常的页面跳转。
    // 故使用 location.replace 在跳转到 login 的同时重置 history
    window.location.replace(path);
  };

  static replaceToLogin = () => {
    HistoryHelper.replace('/login');
  };

  static getSubAppPath = (appName: string, pagePath = '') => {
    if (pagePath) {
      return `/${appName}/#${pagePath}`;
    }
    return `/${appName}`;
  };

  static reload = () => {
    window.location.reload();
  };

  static openNewTab = (url: string) => {
    const parentOpener = window.opener;
    window.opener = null;
    window.open(url, '_blank');
    window.opener = parentOpener;
  };

  static getCurrentHashPath = () => {
    return window.location.hash.replace(/^#/, '');
  };

  static getUrlWithoutCasTicket = (url: string) => {
    const parsedUrl = new URL(url);
    parsedUrl.searchParams.delete('ticket');
    return parsedUrl.href;
  };
}
